package com.yichat.micro.msghttpservice.core.record.service;

import com.yichat.micro.msghttpservice.common.result.HttpResult;
import com.yichat.micro.msghttpservice.core.retry.RetryMsgHttpRequestVo;

/**
 * Created by chenmohan on 2019/04/16
 *
 * @description
 */
public interface RecordService {

    /**
     * 记录日志
     *
     * @param retryVo
     * @param httpResult
     */
    void record(RetryMsgHttpRequestVo retryVo, HttpResult httpResult);

    /**
     * 在响应前记录日志,响应码为0,响应结果为""
     *
     * @param retryVo
     */
    void recordBeforeResponse(RetryMsgHttpRequestVo retryVo);

    /**
     * 响应成功记录日志
     *
     * @param retryVo
     * @param httpResult
     */
    void recordWithSuccessed(RetryMsgHttpRequestVo retryVo, HttpResult httpResult);

    /**
     * 响应超时记录日志
     *
     * @param retryVo
     */
    void recordWithRetryFailed(RetryMsgHttpRequestVo retryVo);

    /**
     * 批量请求最终失败(请求到中途,因重试达到上限等原因不能继续请求后面时视为 最终失败)
     *
     * @param retryVo
     */
    void recoredWithBatchFailed(RetryMsgHttpRequestVo retryVo);

    /**
     * 批量请求最终失败(请求到中途,因重试达到上限等原因不能继续请求后面时视为 最终失败)
     *
     * @param retryVo
     */
    void recoredWithBatchSuccessed(RetryMsgHttpRequestVo retryVo);
}
